package br.com.websec.conta;

import java.io.Serializable;

import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.Id;
import javax.persistence.JoinColumn;
import javax.persistence.ManyToOne;
import javax.persistence.Table;

import br.com.websec.agencia.Agencia;
import br.com.websec.fornecedor.Fornecedor;

@Entity
@Table(name = "conta")
public class Conta implements Serializable {

	/**
	 * 
	 */
	private static final long serialVersionUID = 1L;

	@Id
	@GeneratedValue
	@Column(name = "idconta")
	private Integer idConta;

	@Column(name = "numeroconta", nullable = false)
	private String numeroConta;

	private String digitoConta;

	@ManyToOne
	@JoinColumn(name = "idagencia", nullable = false)
	private Agencia agencia;

	@ManyToOne
	@JoinColumn(name = "idfornecedor", nullable = false)
	private Fornecedor fornecedor;
	
	private char defaultcontacnab;
	
	public char getDefaultcontacnab() {
		return defaultcontacnab;
	}

	public void setDefaultcontacnab(char defaultcontacnab) {
		this.defaultcontacnab = defaultcontacnab;
	}

	public Integer getIdConta() {
		return idConta;
	}

	public void setIdConta(Integer idConta) {
		this.idConta = idConta;
	}

	public String getNumeroConta() {
		return this.numeroConta;
	}

	public void setNumeroConta(String numeroConta) {
		this.numeroConta = numeroConta;
	}

	public String getDigitoConta() {
		return digitoConta;
	}

	public static long getSerialversionuid() {
		return serialVersionUID;
	}

	public void setDigitoConta(String digito) {
		this.digitoConta = digito;
	}

	public Fornecedor getFornecedor() {
		return fornecedor;
	}

	public void setFornecedor(Fornecedor fornecedor) {
		this.fornecedor = fornecedor;
	}

	@Override
	public int hashCode() {
		final int prime = 31;
		int result = 1;
		result = prime * result + ((agencia == null) ? 0 : agencia.hashCode());
		result = prime * result + defaultcontacnab;
		result = prime * result
				+ ((digitoConta == null) ? 0 : digitoConta.hashCode());
		result = prime * result
				+ ((fornecedor == null) ? 0 : fornecedor.hashCode());
		result = prime * result + ((idConta == null) ? 0 : idConta.hashCode());
		result = prime * result
				+ ((numeroConta == null) ? 0 : numeroConta.hashCode());
		return result;
	}

	public Agencia getAgencia() {
		return this.agencia;
	}

	public void setAgencia(Agencia agencia) {
		this.agencia = agencia;
	}

	@Override
	public boolean equals(Object obj) {
		if (this == obj)
			return true;
		if (obj == null)
			return false;
		if (getClass() != obj.getClass())
			return false;
		Conta other = (Conta) obj;
		if (agencia == null) {
			if (other.agencia != null)
				return false;
		} else if (!agencia.equals(other.agencia))
			return false;
		if (defaultcontacnab != other.defaultcontacnab)
			return false;
		if (digitoConta == null) {
			if (other.digitoConta != null)
				return false;
		} else if (!digitoConta.equals(other.digitoConta))
			return false;
		if (fornecedor == null) {
			if (other.fornecedor != null)
				return false;
		} else if (!fornecedor.equals(other.fornecedor))
			return false;
		if (idConta == null) {
			if (other.idConta != null)
				return false;
		} else if (!idConta.equals(other.idConta))
			return false;
		if (numeroConta == null) {
			if (other.numeroConta != null)
				return false;
		} else if (!numeroConta.equals(other.numeroConta))
			return false;
		return true;
	}

}
